package com.example.geohash;

import org.springframework.data.geo.*;
import org.springframework.data.redis.connection.RedisGeoCommands;

import java.util.Collection;
import java.util.List;

public interface GeoService {

    /**
     * 初始化数据
     *
     * @param shops
     * @return
     */
    Long initGeoInfo(Collection<Shops> shops);

    /**
     * 获取坐标信息
     *
     * @param strings
     * @return
     */
    List<Point> getPos(String[] strings);

    /**
     * 获取两点间的距离
     *
     * @param var1
     * @param var2
     * @param metric
     * @return
     */
    Distance distanceBTPoints(String var1, String var2, Metric metric);


    /**
     * 根据给定地理位置坐标获取指定范围内的地理位置集合
     *
     * @param within
     * @param args
     * @return
     */
    GeoResults<RedisGeoCommands.GeoLocation<String>> getPointRadius(Circle within, RedisGeoCommands.GeoRadiusCommandArgs args);


    /**
     * 根据给定地理位置获取指定范围内的地理位置集合
     *
     * @param member
     * @param distance
     * @param args
     * @return
     */
    GeoResults<RedisGeoCommands.GeoLocation<String>> getMemberRadius(String member, Distance distance, RedisGeoCommands.GeoRadiusCommandArgs args);

    /**
     * 获取某个地理位置的hash
     *
     * @param cities
     * @return
     */
    List<String> getGeoHash(String[] cities);

}
